var action = null;
var selectId = null;
var zipJson = null;
var excle_data = [];
var excel_table_persons = []; // 存储获取到的数据
var fileName = "导入错误";
var excelResult = [];
function init() {
    initEvent();
}

// 初始化事件
function initEvent() {
    // 解析excle
    $('#excel-file').change(function(e) {
        $("#file_upload").addClass("nav");
        $("#progress").removeClass("nav");

        var files = e.target.files;
        var fileName = files[0].name;
        if(fileName.substring(fileName.length-5) == '.xlsx' || fileName.substring(fileName.length-5) == '.xlsm'){ //选择的是Excel文件
            $("#loading").addClass("loading").html("正在加载excel数据...");
            var fileReader = new FileReader();
            fileReader.onload = function(ev) {
                try {
                    var data = ev.target.result,
                        workbook = XLSX.read(data, {
                            type: 'binary'
                        }) // 以二进制流方式读取得到整份excel表格对象

                    //      document.getElementById("demo").innerHTML = JSON.stringify( XLSX.utils.sheet_to_json(workbook.Sheets[workbook.SheetNames[0]]));
                } catch (e) {
                    $("#loading").removeClass("loading").empty();
                    layer.msg('文件类型不正确');
                    return;
                }

                // 表格的表格范围，可用于判断表头是否数量是否正确
                var fromTo = '';
                // 遍历每张表读取
                var sheetIndex = 0;
                for (var sheet in workbook.Sheets) {
                    if(sheetIndex == 0){
                        if (workbook.Sheets.hasOwnProperty(sheet)) {
                            fromTo = workbook.Sheets[sheet]['!ref'];
                            //console.log(fromTo);
                            excel_table_persons = excel_table_persons.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet],{raw:true, header:1}));
                            excel_table_persons = excel_table_persons.slice(1,excel_table_persons.length);
                            excle_data = excle_data.concat(XLSX.utils.sheet_to_json(XLSX.utils.aoa_to_sheet(excel_table_persons)));
                            // break; // 如果只取第一张表，就取消注释这行
                        }
                    }
                    sheetIndex ++;
                }

                loadDataTable(excel_table_persons,excle_data);
            };

            // 以二进制方式打开文件
            fileReader.readAsBinaryString(files[0]);
        }else if(fileName.substring(fileName.length-4) == '.zip' ){
            $("#loading").addClass("loading").html("正在加载excel数据...");
            var form = document.getElementById("uploadfile1");
            var formData = new FormData(form);
            $.ajax({
                url: appPath + "/admin/questionSelf/uploadZip",
                type: "POST",
                cache: false,
                dataType: "json",
                data: formData,
                processData: false,
                contentType: false,
                success: function (res) {
                    if(res.result=="success"){
                        excel_table_persons = res.data2;
                        excle_data = res.data;
                        zipJson = res.zipJson;
                        // 填充数据
                        dataTable(excel_table_persons);
                        loadDataTable(excel_table_persons,excle_data);
                    }else{
                        $("#loading").removeClass("loading").empty();
                        layer.alert(res.message, {icon: 2,  skin: 'layer-ext-moon'},function () {
                            window.location.reload(true);
                        });
                    }
                }
            });


        }else{
            $("#loading").removeClass("loading").empty();
            layer.msg("请选择正确的Excel文件！");
            $("#file_upload").removeClass("nav");
            $("#progress").addClass("nav");
            $("#excel-file").val("");
        }


    });

    // 导入数据到库
    $("#importBtn").click(function () {

        var thisObj = $(this);
        if($(thisObj).html() == '下载'){  // 下载Excel
            downloadExl(excelResult,fileName);
        }else{  //导入Excel
            $("#loading").addClass("loading").html("正在导入...");
            $(thisObj).attr("onclick", "");
            $("#progress").addClass("nav");
            $("#before").hide();
            $("#question_import_table").dataTable().fnClearTable();
            $("#question_import_table").dataTable().fnDestroy();

            excle_data = JSON.stringify(excle_data);

            $.ajax({
                url: appPath + '/admin/questionSelf/to_import',
                async: false,
                type: 'post',
                data: {
                    'excle_data': excle_data ,
                    'courseId': $("#courseId").val(),
                    'importType': "objective",
                    "zipJson": zipJson
                },
                success: function(data) {
                    $("#loading").removeClass("loading").empty();
                    if("" == data || null == data ){
                        layer.msg("试题内容参数为空！",{icon:2});
                    }
                    var result = eval(data);
                    if(result.total == null){
                        layer.msg("表格内容不符合模板要求！",{icon:2});
                        $("#before").show();
                        $("#progress").removeClass("nav");
                        // 填充数据
                        dataTable(excel_table_persons);
                        return;
                    }else{
                        $("#progress").removeClass("nav");
                        $(".mod_import ul li:eq(2)").removeClass("cur").addClass("active");
                        if (result.failed == 0) { //导入成功
                            $("#export").html("导入完成");
                            $("#titleInfo").html('共导入 ' + result.total + '条 , 成功 ' + result.success + '条 , 失败 ' + result.failed + '条');
                            $(thisObj).hide();
                            $("#table").hide();
                            layer.confirm("导入成功！", {
                                icon : 1,
                                btn : [ "确认", "取消" ]
                            }, function() {
                                window.opener.question_manage.searchAll();
                                window.close();
                            });
                        } else {
                            var header = result.header;
                            var content = result.contents;
                            var tableResult = [];
                            var titleKey = [];
                            $(header).each(function () {
                                var headerList = [];
                                for (var key in this) {
                                    var value = "";
                                    if (this[key] != undefined) {
                                        value = this[key];
                                    }
                                    headerList.push(value);
                                    titleKey.push(key);
                                }
                                tableResult.push(headerList);
                            });
                            $(content).each(function () {
                                var contentList = [];
                                var obj = this;
                                var map = {};
                                for(var i in titleKey){
                                    var key = titleKey[i];
                                    var value = '';
                                    if(obj[key] != undefined){
                                        value = obj[key];
                                    }
                                    var zhKey = header[key];
                                    map[zhKey] = value;
                                    contentList.push(value);
                                }
                                excelResult.push(map);
                                tableResult.push(contentList);
                            });

                            dataTable(tableResult);
                            $(thisObj).attr("title", "下载").html("下载");
                            $("#export").html('下载').mousemove(function () {
                                $(this).css("cursor","pointer");
                            });
                            $("#titleInfo").html('共导入 ' + result.total + '条 , 成功 ' + result.success + '条 , 失败 ' + result.failed + '条');

                        }
                    }
                }
            });
        }
    })
}



$("#export").click(function () {
    if($(this).html() == "下载"){
        downloadExl(excelResult,fileName);
    }
});


function dataTable(persons) {
    // 添加表单数据的表头
    var item = '<tr><th class="table-checkbox"></th>';
    var rowspanNum = persons[0].length;  //  table 列数
    for(var i=0;i<persons[0].length;i++){
        item += '<th>'+persons[0][i]+'</th>';
    }
    item += '</tr>';
    $("#table table thead").html(item);

    // 添加表单数据
    var html = "";
    for(var i=1;i<persons.length;i++){
        if(persons[i].length > 0){
            var rows = rowspanNum - persons[i].length;  // 与标题行差的列数
            html += '<tr><td>'+i+'</td>';
            for(var j=0;j<persons[i].length;j++){
                var val = persons[i][j];
                if(val == undefined){
                    val = "/" ;
                }
                html += '<td>'+val+'</td>';
            }
            for (var t=0; t<rows; t++){
                html += '<td>/</td>';
            }
            html += '</tr>';
        }
    }
    $("#table table tbody").html(html);
    $("#export").html("导入预览");
    $("#titleInfo").html('将要导入的表格信息如下');

    $("#question_import_table").DataTable({
        destroy:true,
        "language": {
            "sProcessing": "加载中...",
            "sLengthMenu": "显示 _MENU_ 项结果",
            "sZeroRecords": "没有匹配结果",
            "sInfo": "显示第 _START_ 至 _END_ 项结果，共 _TOTAL_ 项",
            "sInfoEmpty": "显示第 0 至 0 项结果，共 0 项",
            "sEmptyTable": "表中数据为空",
            "sLoadingRecords": "载入中..."
        },
        "paging": false,
        "searching": false,
        "ordering" : false,
        "searchable": false,
        "bLengthChange":false,

    });
}

function loadDataTable(excel_table_persons,excle_data) {
    if(excel_table_persons.length >0){
        if(excle_data.length <= 0){
            $("#loading").removeClass("loading").empty();
            layer.msg("Excel文件不符合模板要求！",{icon:2});
            $("#file_upload").removeClass("nav");
            $("#progress").addClass("nav");
            $("#excel-file").val("");
            return;
        }
        $("#foot").removeClass("nav");


        $(".mod_import ul li:eq(0)").removeClass("cur").addClass("active");
        $(".mod_import ul li:eq(1)").addClass("cur");

        // 填充数据
        dataTable(excel_table_persons);
        $("#loading").removeClass("loading").empty();
        $(".mod_import ul li:eq(1)").removeClass("cur").addClass("active");
        $(".mod_import ul li:eq(2)").addClass("cur");
    }else{
        $("#loading").removeClass("loading").empty();
        layer.msg("Excel文件为空！");
        $("#file_upload").removeClass("nav");
        $("#progress").addClass("nav");
        $("#excel-file").val("");
    }
}